<?php
/**
 * View_User
 *
 * Класс предназначен для отображения информации, связанной с пользователем
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_User {
  /**
   * Метод возвращает сообщение для вывода через alert (JS), если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   * @param bool $useDefaultFirstRow - выводить или нет вводную строку "Возникли ... ошибки:"
   */
	  public static function getUserMessageJs($message, $messageType = -1, $useDefaultFirstRow = true) {
	    $toReturn = '';
	    if ($messageType > 0) $toReturn = $message;
	    if ($messageType < 0) {
	      if ($useDefaultFirstRow) $toReturn .= "Произошла следующая ошибка:\n";
	      $toReturn .= $message;
	    }
	    return $toReturn;
	  }

  /**
   * Метод возвращает сообщение, если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   */
	  public static function getUserMessage($message, $messageType = -1, $useDefaultFirstRow = true) {
	    $toReturn = '';
	    if ($messageType > 0) $toReturn = self::showSuccessMessage($message);
	    if ($messageType < 0) $toReturn = self::showErrorMessage($message, $useDefaultFirstRow);
	    return $toReturn;
	  }

  /**
   * Метод выводит сообщение пользователю, если такое имеется
   *
   * @param string $message - текст сообщения
   * @param integer $messageType - тип сообщения
   */
	  public static function showUserMessage($message, $messageType = -1, $useDefaultFirstRow = true) {
	    echo self::getUserMessage($message, $messageType, $useDefaultFirstRow);
	  }

	  /**
	   * Метод выводит сообщение пользователю об успехе
	   *
	   * @param string $message - текст сообщения
	   */
	  public static function showSuccessMessage($message) {
	    return '<div class="userSuccess">' . $message . '</div>';
	  }

	  /**
	   * Метод выводит сообщение пользователю об ошибке
	   *
	   * @param string $message - текст сообщения
	   */
	  public static function showErrorMessage($message, $useDefaultFirstRow = true) {
	    if ($useDefaultFirstRow) return '<div class="userError"><b>Произошла следующая ошибка</b>:<br />' . $message . '</div>';
	    else return '<div class="userError">' . $message . '</div>';
	  }

	  /**
	   * Выводит начало сообщения об ошибки - чисто верстка
	   *
	   */
	  public static function showErrorMessageStart() {
	  	echo '<div class="userError">';
	  }

	  /**
	   * Выводит конец сообщения об ошибки - чисто верстка
	   *
	   */
	  public static function showErrorMessageFinish() {
	  	echo '</div>';
	  }

	  /**
	   * Метод выводит имя пользователя
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function showUserName($arrUser, $maxLengthOfName = false) {
			echo self::getUserName($arrUser, $maxLengthOfName);
	  }

	  /**
	   * Метод выводит имя пользователя, обрезая длину имени при необходимости
	   *
	   * @param array $arrUser
	   * @param integer $maxLengthOfName
	   * @return string
	   */
	  public static function getUserName($arrUser, $maxLengthOfName = false) {
	  	$retText = '';
	  	if ($maxLengthOfName === false) $retText .= $arrUser['first_name'] . '&nbsp;' . $arrUser['last_name'];
			else
				if ($maxLengthOfName <= Service_Function::utf8_strlen($arrUser['first_name'])) $retText .= Service_Function::utf8_substr($arrUser['first_name'], 0 , $maxLengthOfName) . '...';
				else
					if ($maxLengthOfName < Service_Function::utf8_strlen($arrUser['first_name']) + Service_Function::utf8_strlen($arrUser['last_name']) + 1) {
						$retText .= $arrUser['first_name'] . '&nbsp;' . Service_Function::utf8_substr($arrUser['last_name'], 0 , $maxLengthOfName - Service_Function::utf8_strlen($arrUser['first_name'])-1) . '...';
					}
					else $retText .= $arrUser['first_name'] . '&nbsp;' . $arrUser['last_name'];
			return $retText;
	  }
	  
	  /**
	   * Метод формирует полное имя пользователя, вместе с отчеством
	   *
	   * @param array $arrUser
	   * @param string $separator
	   * @return string
	   */
	  public static function getFullUserName($arrUser, $separator = ' ') {
	    //return $arrUser['last_name'] . $separator . $arrUser['first_name'] . $separator . $arrUser['middle_name'];
	    return $arrUser['login'];
	  }	  
	  
	  /**
	   * Метод формирует имя пользователя - Фамилия + инициалы (Иванов И.Е.)
	   *
	   * @param array $arrUser
	   * @param string $separator
	   * @return string
	   */
	  public static function getNameWithInitials($arrUser, $separator = ' ') {
      $middleName = ($arrUser['middle_name']) ? Service_Function::utf8_first_upper_letter($arrUser['middle_name']) . '.' : '';
	    return $arrUser['last_name'] . $separator . Service_Function::utf8_first_upper_letter($arrUser['first_name']) . '.' . $middleName;
	  }

	  /**
	   * Метод выводит имя пользователя со ссылкой на его профиль
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function showLinkUserName($arrUser, $maxLengthOfName = false) {
			echo self::getLinkUserName($arrUser, $maxLengthOfName);
	  }


	  /**
	   * Метод выводит имя пользователя со ссылкой на его профиль
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function getLinkUserName($arrUser, $maxLengthOfName = false) {
			$text = '<a href="' . self::getUserHref($arrUser) . '" onclick="" class="userLink" title="';
			$text .= self::getUserName($arrUser, false);
			$text .= '">';
			$text .= self::getUserName($arrUser, $maxLengthOfName);
			$text .= '</a>';
			return $text;
	  }
	  
	  /**
	   * Метод выводит имя пользователя со ссылкой на его профиль
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function getLinkFullUserName($arrUser) {
			if (isset($arrUser['login'])) $text = '<a href="' . self::getUserHref($arrUser) . '" onclick="" class="userLink" title="';
			else $text = '<span class="userLink" title="';
			$text .= self::getFullUserName($arrUser);
			$text .= '">';
			$text .= self::getFullUserName($arrUser);
			if (isset($arrUser['login'])) $text .= '</a>';
			else $text .= '</span>';
			return $text;
	  }



	  /**
	   * Метод выводит аватару пользователя
	   *
	   * @param array $arrUser - массив с данными пользователя
	   * @param array $sizePrefix - префикс размера изображения
	   
	 	public static function showLinkUserAvatar($arrUser, $sizePrefix = 's') {
	 		echo '<a href="' . self::getUserHref($arrUser) . '">';
				echo '<img src="' . W_IMAGES . $arrUser['pic_folder'] . $sizePrefix . '_' . $arrUser['pic_file'] . '" alt="';
				  self::showUserName($arrUser);
				echo '" />';
			echo '</a>';
	  }
    */
	  /**
	   * Метод передает аватару пользователя
	   *
	   * @param array $arrUser - массив с данными пользователя
	   * @param array $sizePrefix - префикс размера изображения
	   
	 	public static function getUserAvatar($arrUser, $sizePrefix = 's') {
	 		$str = '';
	 		$str .= '<a href="' . self::getUserHref($arrUser) . '">';
				$str .= '<img src="' . W_IMAGES . $arrUser['pic_folder'] . $sizePrefix . '_' . $arrUser['pic_file'] . '" alt="';
				  $str .= $arrUser['login'];
				$str .= '" />';
			$str .= '</a>';
			return $str;
	  }
    */
	  /**
	   * Метод получает ссылку на пользователя, в которой фигурирует логин
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function getUserLoginLinkHref($arrUser) {
	 		$str = '';
	 		$str .= '<a href="' . self::getUserHref($arrUser) . '">';
				  $str .= $arrUser['login'];
			$str .= '</a>';
			return $str;
	  }

	  /**
	   * Метод получает ссылку на профайл пользователя. Исключительно href
	   *
	   * @param array $arrUser - массив с данными пользователя
	   */
	 	public static function getUserHref($arrUser) {
	 		//$str = '';
	 		//if ($arrUser['is_guide']) return W_ABSPATH . $arrUser['login'] . '/';
	 		//else  return W_ABSPATH . 'profile/' . $arrUser['login'] . '/';
	 		//return W_ABSPATH . 'profile/' . $arrUser['login'] . '/';
	 		return W_ABSPATH . 'profile/' . $arrUser['ID_user'] . '/';
	  }


	


	/**
	 * Метод выводит форму редактирования профайла
	 *
	 * @param $objUser - объект данных о пользователе
	 */
	public static function editProfile($objUser) {
		$objForm = new Form_ViewForm(array('enctype' => 'multipart/form-data', 'action' => W_ABSPATH . 'tourist/' . $objUser->tableFields['login'] . '/edit/'), $objUser);

    if (!empty($objUser->tableFields['birthday'])) {
				list($year, $month, $day) = split('[-.-]', $objUser->tableFields['birthday']);
				$objUser->tableFields['birthday'] =  $day . '-' . $month . '-' . $year;
  	}

  	if (empty($objUser->tableFields['pic_file'])) {
  		$objUser->tableFields['pic_file'] = 'default.gif';
  		$objUser->tableFields['pic_folder'] = 'essence/user/';
  	}

    $objForm->show(true);
	  //Имя
    echo '<p>Имя</p>';
    echo '<p>';
		  $objForm->textField(array('maxlength' => '64', 'text' => 'Имя', 'required' => 1), 'first_name', true);
		echo '</p>';

 		//Фамилия
    echo '<p>Фамилия</p>';
    echo '<p>';
		  $objForm->textField(array('maxlength' => '64', 'text' => 'Фамилия', 'required' => 1), 'last_name', true);
		echo '</p>';

		//фото
    $isPicSet = $objUser->getField('pic_file');
    echo '<div>';
      if ($isPicSet) {
        echo '<img src="' . W_IMAGES . $objUser->getField('pic_folder') . 's_' . $objUser->getField('pic_file') . '" class="savedImage" style="float:left" alt="" />';
      }
      echo '<div style="' . ($isPicSet ? 'margin-left:70px;' : '')  . '">';
    		echo '<p>Photo</p>';
  		  echo '<div class="uploadWidget' . ($isPicSet ? ' pictureSet' : '')  . '">';
    		  echo '<div class="uploadWidgetBrowse">';
            $objForm->fileField(array('text' => 'Photo', 'class' => 'uploadWidgetInput', 'js' => 'onchange="$(\'#upload_widget_value_1\').html(this.value);"'), 'pic', true);
   		    echo '</div>';
    		  echo '<div class="uploadWidgetContainer">';
    		    echo '<div class="uploadWidgetValue" id="upload_widget_value_1"></div>';
    		  echo '</div>';
  		  echo '</div>';
	    echo '</div>';
	  echo '</div>';

    echo '<p>';
			$objForm->submitButton(array('value' => 'save', 'src' => W_IMAGES . 'button/forms/save.gif'), 'save', true);
		echo '</p>';
		$objForm->close(true);
	}

	
	/**
	 * Метод возвращает название иконки роли для пользователя
	 *
	 * @param integer $userRole
	 * @return string
	 */
	public static function getUserRoleIcoSrcName($userRole) {
  	if ($userRole >= 10) return 'admin.gif';
  	elseif ($userRole >= 7) return 'manager.gif';
  	elseif ($userRole >= 3) return 'good_user.gif';
  	elseif ($userRole >= 1) return 'user.gif';
  	else return 'guest.gif';
	}
	
	/**
	 * Метод возвращает иконку роли для пользователя
	 *
	 * @param integer $userRole
	 * @return string
	 */
	public static function getUserRoleImg($userRole) {
	  return '<img src="' . W_IMAGES . 'icons/user/' . self::getUserRoleIcoSrcName($userRole) . '" class="userRoleIco" alt="" />';
	}
	
	/**
	 * Метод возвращает ссылку на пользователя
	 *
	 * @param array $arrUser
	 * @return string
	 */
	public static function getLinkFullUserNameWithIco($arrUser) {
	  return self::getUserRoleImg($arrUser['user_role']) . self::getLinkFullUserName($arrUser);
	}
	

	/**
	 * Метод возвращает ссылку на пользователя
	 *
	 * @param array $arrUser
	 * @return string
	 */
	public static function getLinkFullUserNameOfAdmin($arrUser) {
	  return '<span class="adminSpan">' . self::getUserName($arrUser) . '</span>';
	}


}
?>